ZKIDROnline SDK For Windows


接口开发手册









熵基科技股份有限公司
http://www.zkteco.com

版权声明


  熵基科技股份有限公司版权所有©,保留一切权利。

  非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本书的部分或全部,并不得以任何形式传播。

1. 目录

版权声明1. 目录2. 前言3. 技术规格3.1 平台支持3.2 浏览器支持3.3 硬件支持3.4 技术规格3.5 快速集成4 websocket协议接口说明4.1 通信数据格式定义4.2 ID Card API4.2.1 获取服务信息4.2.2 读取居民身份证信息 (方式一)4.2.3 设置主动推送读取的居民身份证信息 (方式二)4.2.4 取消主动推送读取的居民身份证信息方式 (方式二)4.2.5 读取 SAM 模块编号4.2.6 获取身份证指纹4.2.7 设置当前播放语音4.2.8 onreadcard 事件4.3 IC Card API4.3.1 获取串口号4.3.2 读取 IC 卡的物理卡号4.3.3 读身份证物理卡号4.3.4 读取 IC 卡数据4.3.5 写入 IC 卡数据4.4 Fingerprint API4.4.1 开始采集指纹4.4.2 结束采集4.4.3 oncapture 事件4.4.4 图像比对模板5 http/https 协议接口说明5.1 ID Card API5.1.1 获取服务基本信息5.1.2 读取身份证信息5.1.3 设置语音播放5.1.4 读取 SAM 模块编号5.1.5 获取身份证指纹5.2 Fingerprint API5.2.1 采集指纹图像5.2.2 采集指纹图像和模板5.2.3 指纹图像(原始图)比对模板5.3 IC Card API5.3.1 获取串口号5.3.2 读取 IC 卡物理卡号5.3.3 读身份证物理卡号5.3.4 读取 IC 卡数据5.3.5 写入 IC 卡数据错误码

2. 前言

欢迎使用熵基科技ZKBioOnline SDK, 在使用前请仔细阅读本文档,以便于您能更快地掌握并使用。

3. 技术规格

3.1 平台支持

Windows XP SP3及以上系统

3.2 浏览器支持

高版本谷歌、火狐,IE10及以上IE浏览器等。(注意edge浏览器不支持websocket协议)

3.3 硬件支持

居民身份证读卡器支持列表:

备注:支持串口类型的设备支持读取IC卡(例如:ID200、IDM系列),带指纹模块的支持指纹采集(例如:ID200)

3.4 技术规格

适用于B/S系统

协议端口号
http24010
https24011
websocket24012

3.5 快速集成

安装

(1) 在客户端双击安装程序“setup.exe”安装sdk。

(2) 按照安装向导完成安装,即可通过http/https/websocket协议访问。

注意:不同协议不支持混合使用

4 websocket协议接口说明

4.1 通信数据格式定义

Web 端与sdk通信采用 JSON 数据格式,各字段区分大小写,定义说明请参考具体接口。

4.2 ID Card API

4.2.1 获取服务信息

请求消息的字段:

功能获取服务信息
modulecommon
msgid自定义消息id
functioninfo
parameter无参数,非必要字段

请求消息的示例如下:

应答消息的字段:

功能获取服务信息
modulecommon
msgid自定义消息id
functioninfo
ret0成功,其它失败,具体请参考错误码
data.now当前请求时间
data.server_versionsdk版本
data.startsdk服务启动的时间

返回成功如下所示:

4.2.2 读取居民身份证信息 (方式一)

请求消息的字段说明:

参数名描述
moduleidcard
functionreadcard
parameter.dev设备类型
parameter.repeat1表示放卡后可以重复读卡,其它表示放一下卡读一次(拿起来,再放下去算一次)
parameter.readtype1 表示读基本信息,包含证件上的文字信息、相片文件、指纹信息(如果居民身份证上有指纹信息读指纹信息,没有则指纹信息为空)
2 表示只读文字信息和相片信息
3 表示读最新住址信息
其他值,则默认是读基本信息。

请求消息示例如下:

应答消息的字段说明:

参数名描述
ret0成功,其它失败,具体请参考错误码
Certificate.Name姓名
Certificate.Sex性别
Certificate.Nation民族(二代证) or 国家(外国人永居证),港澳台居住证无此项
Certificate.NationCode民族编码(外国人永居证和港澳台居住证无此项)
Certificate.Birthday出生日期
Certificate.Address常住地址
Certificate.IDNumber身份证号/证件号
Certificate.IDIssued签发机关
Certificate.IssuedData签发日期
Certificate.ValidDate有效期截止日期
Certificate.Other预留字段
Certificate.CardNumber卡号(暂未使用)
Certificate.PhotoName保存头像图片的地址
Certificate.Base64Photo头像图片数据(jpg Base64string)
Certificate.ImageName证件保存路径
Certificate.Base64Image证件图片
Certificate.fp_feature1第一个登记手指指纹特征,若二代证不支持,则返回空
Certificate.fp_feature2第二个登记手指指纹特征,若二代证不支持,则返回空
Certificate.CardType卡的类型 1 居民身份证 2 外国人居住证 3 港澳台居住证
Certificate.EnName英文名,仅外国人居住证才有
Certificate.CnName中文名,仅外国人居住证才有
Certificate.PassNum港澳台居住证通行证号
Certificate.VisaTimes港澳台居住证签发次数/外国人永居证换证次数
Certificate.RelateIDNum外国人永居证旧版永居证关联号码(2023版外国人永居证才有)
Certificate.OldIDnum外国人永居证旧版永居证号码(2023版外国人永居证才有)

应答消息示例如下:

备注:读身份证的方式一和方式二,只能使用一种,不支持同时使用

4.2.3 设置主动推送读取的居民身份证信息 (方式二)

beginreadcard 方法调用成功后,默认进入读卡状态,每次读取到居民身份证信息都会触发 onreadcard 事件,onreadcard 事件具体参考4.2.9。结束读卡状态需要主动调用 cancelreadcard 方法。

请求消息的字段:

参数名描述
moduleidcard
functionbeginreadcard
parameter无参数,非必要字段

请求消息的示例如下:

应答消息字段说明:

参数名描述
ret0成功,其它失败,具体请参考错误码
dev设备类型
data结果描述

应答消息示例如下:

4.2.4 取消主动推送读取的居民身份证信息方式 (方式二)

请求消息的字段:

参数名描述
moduleidcard
functioncancelreadcard
parameter无参数,非必要字段

请求消息示例如下:

应答消息字段说明:

参数名描述
ret0成功,其它失败,具体请参考错误码
dev设备类型
data结果描述

应答消息示例如下:

4.2.5 读取 SAM 模块编号

请求消息的字段:

参数名描述
moduleidcard
functiongetsamid
parameter.dev设备类型

请求消息示例如下:

应答消息字段说明:

参数名描述
ret0成功,其它失败,具体请参考错误码
dev设备类型
data.samid设备sam模块编号

应答消息示例如下:

4.2.6 获取身份证指纹

必须通过上述提供的方式一或者方式二成功读取到居民二代身份证,才能通过 getidfp 方法获取居民身份证上保存的指纹信息。

请求消息的字段:

参数名描述
moduleidcard
functiongetidfp
parameter.dev设备类型

请求消息示例如下:

应答消息字段说明:

参数名描述
ret0成功,其它失败,具体请参考错误码
dev设备类型
data.feature1第一个登记手指指纹特征(base64 string)
data.feature2第二个登记手指指纹特征(base64 string)

应答消息示例如下:

4.2.7 设置当前播放语音

请求消息的字段:

参数名描述
moduleidcard
functionsetvoice
parameter.dev设备类型
parameter.voicetype播放的语音类型
0 请放卡
1 读卡成功
2 读卡失败,请重新放卡
3 读卡成功,请核验指纹
4 核验成功
5 核验失败,请重按手指
6 写卡成功
7 写卡失败

请求消息示例如下:

应答消息字段说明:

参数名描述
ret0成功,其它失败,具体请参考错误码
dev设备类型
data结果描述

应答消息示例如下:

4.2.8 onreadcard 事件

onreadcard事件消息的字段说明:

参数名描述
ret0成功,其它失败,具体请参考错误码
eventonreadcard
Certificate.Name姓名
Certificate.Sex性别
Certificate.Nation民族(二代证) or 国家(外国人永居证),港澳台居住证无此项
Certificate.NationCode民族编码(外国人永居证和港澳台居住证无此项)
Certificate.Birthday出生日期
Certificate.Address常住地址
Certificate.IDNumber身份证号/证件号
Certificate.IDIssued签发机关
Certificate.IssuedData签发日期
Certificate.ValidDate有效期截止日期
Certificate.Other预留字段
Certificate.CardNumber卡号(暂未使用)
Certificate.PhotoName保存头像图片的地址
Certificate.Base64Photo头像图片数据(jpg Base64string)
Certificate.ImageName证件保存路径
Certificate.Base64Image证件图片
Certificate.fp_feature1第一个登记手指指纹特征,若二代证不支持,则返回空
Certificate.fp_feature2第二个登记手指指纹特征,若二代证不支持,则返回空
Certificate.CardType卡的类型 1二代证 2外国人居住证 3港澳台居住证
Certificate.EnName英文名,仅外国人居住证才有
Certificate.CnName中文名,仅外国人居住证才有
Certificate.PassNum港澳台居住证通行证号
Certificate.VisaTimes港澳台居住证签发次数/外国人永居证换证次数
Certificate.RelateIDNum外国人永居证旧版永居证关联号码(2023版外国人永居证才有)
Certificate.OldIDnum外国人永居证旧版永居证号码(2023版外国人永居证才有)

onreadcard 事件返回的消息示例如下:

4.3 IC Card API

4.3.1 获取串口号

请求消息的字段:

参数名描述
moduleiccard
functiongetcom
parameter.dev设备类型

请求消息示例如下:

应答消息字段说明:

参数名描述
ret0成功,其它失败,具体请参考错误码
dev设备类型
data.name设备串口号

应答消息返回示例如下:

4.3.2 读取 IC 卡的物理卡号

请求消息的字段:

参数名描述
moduleiccard
functiongeticsnr
parameter.dev设备类型
parameter.iport设备串口号

请求消息示例如下:

应答消息字段说明:

参数名描述
ret0成功,其它失败,具体请参考错误码
dev设备类型
data.icsnrIC卡物理卡号(10进制字符串)

应答消息返回示例如下:

4.3.3 读身份证物理卡号

请求消息的字段:

参数名描述
moduleiccard
functiongetidsnr
parameter.dev设备类型

请求消息示例如下:

应答消息字段说明:

参数名描述
ret0成功,其它失败,具体请参考错误码
dev设备类型
data.idsnrID卡物理卡号(16进制字符串)

应答消息返回示例如下:

4.3.4 读取 IC 卡数据

请求消息的字段:

参数名描述
moduleiccard
functionreadcard
parameter.dev设备类型
parameter.iport设备串口号
parameter.sector扇区号
parameter.idx块索引
parameter.key扇区秘钥(16进制字符串,长度12位)

请求消息示例如下:

应答消息字段说明:

参数名描述
ret0成功,其它失败,具体请参考错误码
dev设备类型
data.ICdata读取的IC卡块数据(16进制字符串,长度32位)
data.ICidIC卡物理卡号(int 类型)

应答消息返回示例如下:

4.3.5 写入 IC 卡数据

请求消息的字段:

参数名描述
moduleiccard
functionwritecard
parameter.dev设备类型
parameter.iport设备串口号
parameter.sector扇区号
parameter.idx块索引
parameter.key扇区秘钥(16进制字符串,长度12位)
parameter.data要写入扇区块的数据(16进制字符串,长度32位)

请求消息示例如下:

应答消息字段说明:

参数名描述
ret0成功,其它失败,具体请参考错误码
dev设备类型
data.ICidIC卡物理卡号(int 类型)

应答消息返回示例如下:

4.4 Fingerprint API

4.4.1 开始采集指纹

begincapture 方法调用成功后,默认进入指纹采集状态,每次采集都会触发oncapture 事件,oncapture 事件具体参考4.4.3。需要主动调用 endcapture 方法结束采集状态。

请求消息的字段:

参数名描述
modulefingerprint
functionbegincapture
parameter.dev设备类型

请求消息示例如下:

应答消息字段说明:

参数名描述
ret0成功,其它失败,具体请参考错误码
dev设备类型
data结果描述

应答消息返回示例如下:

4.4.2 结束采集

请求消息的字段:

参数名描述
modulefingerprint
functionendcapture
parameter.dev设备类型

请求消息示例如下:

应答消息字段说明:

参数名描述
ret0成功,其它失败,具体请参考错误码
dev设备类型
data结果描述

应答消息返回示例如下:

4.4.3 oncapture 事件

进入采集状态后,每次指纹按在采集器上都会触发oncapture 事件,并返回采集的指纹模板和图片数据。

采集事件返回的字段说明:

参数名描述
ret0成功,其它失败,具体请参考错误码
dev设备类型
eventoncapture
data.feature指纹模板数据(base64 string)
data.jpgbase64jpg格式指纹图像(base64 string)
data.rawbase64原始指纹图像数据(base64 string)

采集事件返回的消息示例如下:

4.4.4 图像比对模板

请求消息的字段说明:

参数名描述
modulefingerprint
functionimagefpmatch
parameter.dev设备类型
rawbase64指纹原始图片数据(base64 string)
feature指纹特征模板(base64 string)

请求消息示例如下:

应答消息字段说明:

参数名描述
ret0成功,其它失败,具体请参考错误码
dev设备类型
data.score比对返回的分数

应答消息返回示例如下:

5 http/https 协议接口说明

5.1 ID Card API

5.1.1 获取服务基本信息

请求方法:

返回消息的字段说明:

功能获取服务信息
ret0成功,其它失败,具体请参考错误码
data.now当前请求时间
data.server_versionsdk版本
data.startsdk服务启动的时间

返回消息示例如下:

5.1.2 读取身份证信息

请求方法:

请求方法中的参数说明:

参数名参数类型描述
OP-DEVint设备类型
CMD-URLint4 表示读取身份证信息
REPEATint1表示放卡后可以重复读卡,其它表示放一下卡读一次(拿起来,再放下去算一次)
READTYPEint1 表示读基本信息,包含证件上的文字信息、相片文件、指纹信息(如果居民身份证上有指纹信息读指纹信息,没有则指纹信息为空)
2 表示只读文字信息和相片信息
3 表示读最新住址信息
其他值,则默认是读基本信息。
TIMEOUTint读卡的超时时间(以s为单位)

返回消息的字段说明:

参数名描述
ret0成功,其它失败,具体请参考错误码
Certificate.Name姓名
Certificate.Sex性别
Certificate.Nation民族(二代证) or 国家(外国人永居证),港澳台居住证无此项
Certificate.NationCode民族编码(外国人永居证和港澳台居住证无此项)
Certificate.Birthday出生日期
Certificate.Address常住地址
Certificate.IDNumber身份证号/证件号
Certificate.IDIssued签发机关
Certificate.IssuedData签发日期
Certificate.ValidDate有效期截止日期
Certificate.Other预留字段
Certificate.CardNumber卡号(暂未使用)
Certificate.PhotoName保存头像图片的地址
Certificate.Base64Photo头像图片数据(jpg Base64string)
Certificate.ImageName证件保存路径
Certificate.Base64Image证件图片
Certificate.fp_feature1第一个登记手指指纹特征,若二代证不支持,则返回空
Certificate.fp_feature2第二个登记手指指纹特征,若二代证不支持,则返回空
Certificate.CardType卡的类型 1居民身份证 2外国人居住证 3港澳台居住证
Certificate.EnName英文名,仅外国人居住证才有
Certificate.CnName中文名,仅外国人居住证才有
Certificate.PassNum港澳台居住证通行证号
Certificate.VisaTimes港澳台居住证签发次数/外国人永居证换证次数
Certificate.RelateIDNum外国人永居证旧版永居证关联号码(2023版外国人永居证才有)
Certificate.OldIDnum外国人永居证旧版永居证号码(2023版外国人永居证才有)

返回消息示例如下:

5.1.3 设置语音播放

请求方法:

请求方法中的参数说明:

参数名参数类型描述
OP-DEVint设备类型
CMD-URLint16 表示设置语音播放
VoiceTypeint语音类型有(VoiceType的值):
0 请放卡
1 读卡成功
2 读卡失败,请重新放卡
3 读卡成功,请核验指纹
4 核验成功
5 核验失败,请重按手指
6 写卡成功
7 写卡失败

返回的消息字段:

参数名参数类型描述
retint0成功,其它失败,具体请参考错误码
devint设备类型
datastring提示

返回消息示例如下:

5.1.4 读取 SAM 模块编号

请求方法:

请求方法中的参数说明:

参数名参数类型描述
OP-DEVint设备类型
CMD-URLint11 表示读取sam模块编号

返回的消息字段:

参数名参数类型描述
retint0成功,其它失败,具体请参考错误码
devint设备类型
data.samidstringsam 模块编号

返回消息示例如下:

 

5.1.5 获取身份证指纹

必须通过5.1.2介绍的 /ZKIDROnline/ScanReadIdCardInfo?OP-DEV=1&CMD-URL=4&REPEAT=1&READTYPE=1 方法成功读取到居民二代身份证,才能通过当前方法获取居民身份证上保存的指纹信息。

请求方法:

请求方法中的参数说明:

参数名参数类型描述
OP-DEVint设备类型
CMD-URLint14 表示获取身份证指纹特征

返回的消息字段:

参数名参数类型描述
retint0成功,其它失败,具体请参考错误码
devint设备类型
data.feature1base64 string第一个登记手指指纹特征
data.feature2base64 string第二个登记手指指纹特征

返回消息示例如下:

5.2 Fingerprint API

5.2.1 采集指纹图像

请求方法:

请求方法中的参数说明:

参数名参数类型描述
OP-DEVint设备类型
CMD-URLint1表示采集指纹图像
TIMEOUTint设置采集超时时间(单位 s),如果没有传入该参数,默认采集时间为2s

返回的消息字段:

参数名参数类型描述
retint0成功,其它失败,具体请参考错误码
devint设备类型
data.rawBase64base64 string原始指纹图像
data.jpgBase64base64 stringjpg格式指纹图像

返回消息示例如下:

5.2.2 采集指纹图像和模板

请求方法:

请求方法中的参数说明:

参数名参数类型描述
OP-DEVint设备类型
CMD-URLint2表示采集指纹图像和指纹模板
TIMEOUTint设置采集超时时间(单位 s), 如果没有传入该参数,默认采集时间为2s

返回的消息字段:

参数名参数类型描述
retint0成功,其它失败,具体请参考错误码
devint设备类型
data.featurebase64 string指纹特征
data.rawBase64base64 string原始指纹图像
data.jpgBase64base64 stringjpg格式指纹图像

返回消息示例如下:

5.2.3 指纹图像(原始图)比对模板

请求方法:

请求方法中的参数说明:

参数名参数类型描述
OP-DEVint设备类型
CMD-URLint3表示指纹原始图像比对指纹模板

POST 的数据格式参数:

参数名参数类型描述
rawBase64base64 string原始指纹图像
featurebase64 string指纹模板

POST的数据示例如下:

返回的消息字段:

参数名参数类型描述
retint0成功,其它失败,具体请参考错误码
data.scoreint比对分数

返回消息示例如下:

5.3 IC Card API

5.3.1 获取串口号

请求方法:

请求方法中的参数说明:

参数名参数类型描述
OP-DEVint设备类型
CMD-URLint5 表示获取串口号

返回的消息字段:

参数名参数类型描述
retint0成功,其它失败,具体请参考错误码
devint设备类型
data.namestring设备com端口

返回消息示例如下:

5.3.2 读取 IC 卡物理卡号

请求方法:

请求方法中的参数说明:

参数名参数类型描述
OP-DEVint设备类型
CMD-URLint1表示读取IC卡物理卡号
iPortint要打开的端口号

返回的消息字段:

参数名参数类型描述
retint0成功,其它失败,具体请参考错误码
devint设备类型
data.ICSnrstringIC卡物理卡号(10进制字符串)

返回消息示例如下:

5.3.3 读身份证物理卡号

请求方法:

请求方法中的参数说明:

参数名参数类型描述
OP-DEVint设备类型
CMD-URLint2 表示读取身份证物理卡号
iPortint要打开的端口号

返回的消息字段:

参数名参数类型描述
retint0成功,其它失败,具体请参考错误码
devint设备类型
data.IDSnrstringID卡物理卡号(16进制字符串)

返回消息示例如下:

5.3.4 读取 IC 卡数据

请求方法:

请求方法中的参数说明:

参数名参数类型描述
OP-DEVint设备类型
CMD-URLint3 获取IC卡数据
iPortint要打开的端口号
Sectorint扇区号
Idxint块索引
Keystring扇区密钥(16进制字符串,长度12)

返回的消息字段:

参数名参数类型描述
retint0成功,其它失败,具体请参考错误码
devint设备类型
data.ICdatastringIC卡数据(16进制字符串,长度32)
data.ICidintIC卡物理卡号

返回消息示例如下:

5.3.5 写入 IC 卡数据

请求方法:

请求方法中的参数说明:

参数名参数类型描述
OP-DEVint设备类型
CMD-URLint4表示设置IC卡数据
iPortint要打开的端口号
Sectorint扇区号
Idxint块索引
Keystring扇区密钥(16进制字符串,长度12)
Datastring写卡的数据(16进制字符串,长度32)

返回的消息字段:

参数名参数类型描述
retint0成功,其它失败,具体请参考错误码
devint错误描述
data.ICidintIC 卡物理卡号

返回消息示例如下:

 

 

错误码

错误代码说明 
0成功 
1端口打开失败 
2数据传输超时 
3设置超时时间失败 
4设备忙打开失败 
6接口地址参数有误 
10没有找到卡 
11读卡失败 
20自检失败 
30其他错误 
40相片解码失败 
100超时 
200获取照片Base64失败 
201操作失败 
202IC卡参数出错 
-1获取指纹失败 
-100ID/IC卡模块加载失败 
203加载指纹采集库失败 
204加载指纹的算法库失败 
205初始化算库失败 
206初始化采集器失败 
207找不到二代证采集器 
208打开采集器失败 
209采集器采集图像失败 
210采集模板失败 
211比对模板无效 
212传入的JSON格式转换有误 
213比对失败 
214采集器采集图像超时 
215播报的语音类型不支持 
216设置播报语音失败 
其他未知错误